﻿#include "pch.h"
#include "Const.h"
#include "Resource.h"
#include "RivalWindow.h"

/**
 * 构造方法。
 * @param parent    父窗口
 */
RivalWindow::RivalWindow(CWnd* parent): 
    CDialog(IDD_RIVAL_WINDOW, parent) {
}

/**
 * 初始化事件的响应方法。
 * @return 总是 TRUE
 */
BOOL RivalWindow::OnInitDialog() {
    CDialog::OnInitDialog();

    mListViewUsers.SubclassDlgItem(IDC_USER_LIST, this);

    return TRUE;
}

/**
 * "确定"按钮的单击响应方法。
 */
void RivalWindow::OnOK() {
    // 获取用户选择的名字
    int sel = mListViewUsers.GetCurSel();
    if (sel == -1) {
        return;
    }
    CString selectedName;
    mListViewUsers.GetText(sel, selectedName);
    CDialog::GetParent()->SendMessage(Const::UM_GET_RIVAL_NAME, (WPARAM)selectedName.GetBuffer());
    selectedName.ReleaseBuffer();

    // 关闭窗口
    CDialog::OnOK();
}

/**
 * 设置用户名列表。
 * @param usernameList  用户名列表
 */
void RivalWindow::SetUsernameList(TCHAR(*usernameList)[GomokuProtocol::USERNAME_BUF_LEN]) {
    // 删除所有 item
    const int count = mListViewUsers.GetCount();
    for (int i = count - 1; i >= 0; i--) {
        mListViewUsers.DeleteString(i);
    }

    // 添加 item
    for (int i = 0; i < GomokuProtocol::MAX_USER_COUNT; i++) {
        if (usernameList[i][0] == '\0') {
            break;
        }
        mListViewUsers.AddString(usernameList[i]);
    }
}
